МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра САПР
Звіт
до лабораторної роботи №5
на тему «МАСИВИ СИМВОЛІВ (РЯДКИ) В МОВІ ПРОГРАМУВАННЯ С»
з курсу «Проблемно-орієнтовані мови програмування»
ЛЬВІВ 2011
Мета роботи
Навчитися використовувати символьні масиви для розв’язання задач роботи зі стрічками.
Теоретичні відомості
На відміну від інших мов програмування у C не визначено спеціального типу для опрацювання рядків. Масив символів (чи рядок або стрічка) розглядається як масив елементів типу char, який закінчується символом '\0' (нуль-символ) що є ознакою кінця рядка. Такі рядки називають ASCII-рядками. Сталі типу рядок записують у лапках, наприклад, "Львівська політехніка", "студенти", “ “ - рядок, що містить один символ-пропуск. У сталих рядках нуль-символ дописується автоматично.
Під час оголошення символьного масиву необхідно до фактичної довжини рядка додати одиницю для нульового символу (але не у всіх компіляторах). Якщо масив символів оголошують й ініціалізують одночасно, то довжину можна не зазначати, компілятор визначить її. Оскільки рядки є масивами символів, то назва рядка є вказівником на його перший елемент (на перший символ).
У бібліотеці conio.h визначені стандартні функції введення-виведення рядків. Наприклад, getc ( ), getchar ( ) зчитують по одному символу рядка, введеного з клавіатури, putc ( ) та putchar ( ) виводять окремі символи рядка тощо. У бібліотеці stdio.h описані функції для введення gets ( ) та виведення puts ( ) усього рядка. Детальніше про ці та інші функції написано у довідниках.
Для опрацювання масивів символів у мові C є стандартні функції, які описані у модулі string.h. Розглянемо деякі з них:
strlen(<рядок>) - визначає фактичну кількість символів у рядку, застосовується у виразах;
strcat(r1, r2) - команда з'єднання рядків ґі, г2 в один рядок, результат присвоює змінній r1;
strncat(r1, r2, п) - до змінної г1 додає перших n символів рядка г2,
strcpy(r1, r2) - копіює символи з рядка г2 в рядок г1,
strncpy(r1, r2, n) - копіює перших n символів рядка г2 в рядок г1,
strchr(r1, <символ>) - визначає перше входження деякого символу у рядок г1 так: повертає рядок, який починається від першого входження заданого символу до кінця рядка М, застосовується у виразах;
strrchr(r1, <символ>) - визначає останнє входження заданого символу у рядок, застосовується у виразах;
strspn(r1, r2) - визначає номер першого символу, який входить у рядок г1, але не входить у рядок г2, застосовується у виразах;
strstr(r1, r2) - визначає в рядку г1 підрядок, що починається з першого входження рядка г2 у рядок ґі, застосовується у виразах;
strtok(r1, r2) - визначає частину рядка г1, яка закінчується перед першим однаковим символом рядків r1 та г2;
strnset(r1, <символ>, n) - вставляє n разів заданий символ перед рядком г1, застосовується у виразах;
strupr(r1) - перетворює усі малі літери рядка у великі;
strlwr(rl) - перетворює усі великі літери рядка у малі;
strrev(rl) - записує рядок у зворотному порядку.
Текстові функції застосовуються для розв'язування задач кодування даних з метою збереження секретності інформації. Існує наука - криптографія, де вивчаються і створюються різні алгоритми кодування інформації. Основні задачі криптографії - це шифрування тексту, передача його на відстань і дешифрування. Це використовується у банківських справах, у воєнних цілях, у діяльності різних фірм, під час пересилання інформації в локальних чи глобальних мережах тощо.
Давньоримський імператор Цезар кодував свої секретні вказівки так: кожна літера тексту замінювалась на четверту після неї літеру з алфавіту. Такий шифр називається в криптографії шифром зі сталим зміщенням (тут 4), або шифром з одним ключем.
Задача 4...